Server and method for the server to access a volume

ABSTRACT

Embodiments of the present technical solution relate to the technique field of storage, and disclose a server and a method for the server to access a volume. The method comprises: determining, from a first list, a block that needs to be accessed according to an access offset of a volume that needs to be accessed; determining, from a second list, a storage controller corresponding to the block that needs to be accessed according to the determined block; and sending a data reading request or a data writing request to the storage controller corresponding to the block that needs to be accessed to process. Embodiments of the present invention can reduce time delay when the data reading request or the data writing request of the server reaches the block that needs to be accessed.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of International Application PCT/CN2010/079866, filed on Dec. 16, 2010, which claims priority to Chinese Patent Application No. 200910252493.7, filed on Dec. 17, 2009, both of which are hereby incorporated by reference in their entireties.

FIELD OF THE INVENTION

The present invention relates to the technique field of storage, and in particular, to a server and a method for the server to access a volume.

BACKGROUND OF THE INVENTION

In the storage architecture of the multiple storage controllers multiple storage controllers, volume is a kind of logical medium for storing data. Each volume is labeled with a unique identity (ID) for differentiation. Each volume can be divided into a plurality of blocks with the same size. Block is the smallest storage unit for storing data. The blocks into which one volume is divided can be distributed to a plurality of storage controllers in the storage architecture, so that one block corresponds to one storage controller. Each storage controller can be connected to a server through a switch. When the server needs to write data into a volume, each of the storage controllers can simultaneously write data on the server to the blocks into which that volume is divided; when the server needs to read data from a volume, each of the storage controllers can simultaneously read data from the blocks into which that volume is divided and return data to the server. The simultaneous processing of a plurality of storage controllers helps to achieve better performance.

The server can sometimes read data from or write data into one block of a volume. For example, when the server receives an external input command or runs a certain program, it can send a data reading request or a data writing request carrying an access offset of the volume to the storage controller that maps the volume ID of the volume (each storage controller maps one or more volume IDs on the server); the storage controller determines which block the server needs to access according to the access offset and therefore finds the storage controller corresponding to the block which the server needs to access. If the found storage controller is another storage controller, the data reading request or the data writing request will be forwarded, through the high-speed link wire between storage controllers, to a corresponding storage controller to process. The corresponding storage controller can write the data on the server into the block which the server needs to access according to the writing request of the server, or, read the data from the block which the server needs to access according to the reading request of the server and return the data to the server, thereby achieving the objective that the server accesses a volume.

As such, when the storage controller corresponding to a block which the server needs to access is another storage controller but not the storage controller that conducts the query, the data reading request or the data writing request of the server needs to be forwarded to the corresponding storage controller, enlarging the time delay when the data reading request or the data writing request reaches the block that needs to be accessed. In addition, the storage controller needs to temporarily store the data reading request or the data writing request and then implement forward the request, occupying the memory resources of the server.

SUMMARY OF THE INVENTION

Embodiments of the present invention provide a server and a method for the server to access a volume to enable the server to access a volume.

To solve the preceding technical problem, embodiments of the present invention provide the following technical solution:

A method for accessing the storage architecture of the multiple storage controllers multiple storage controllers is provided in embodiments of the present invention. The method includes: determining, from a first list, a block that needs to be accessed according to an access offset of a volume that needs to be accessed, wherein the first list is configured to store information of at least two blocks into which the volume is divided;

determining, from a second list, a storage controller corresponding to the block that needs to be accessed according to the determined block, wherein the second list is configured to store information of a storage controller corresponding to each of the blocks into which the volume is divided; and

sending a data reading request or a data writing request to the storage controller corresponding to the block that needs to be accessed to process.

A server is provided in embodiments of the present invention. The server includes:

a first determining module, configured to determine, from a first list, a block that needs to be accessed according to an access offset of a volume that needs to be accessed, wherein the first list is configured to store information of at least two blocks into which the volume is divided;

a second determining module, configured to determine, from a second list, a storage controller corresponding to the block that needs to be accessed according to the block that needs to be accessed, wherein the second list is configured to store information of a storage controller corresponding to each of the blocks into which the volume is divided; and

a sending module, configured to send a data reading request or a data writing request to the storage controller corresponding to the block determined by the second determining module to process.

By comparison with the prior art, according to embodiments of the present invention, a volume is divided into at least two blocks with the same size and the information of each storage controller corresponding to each of the blocks is stored on the server, allowing the server to access a block according to the access offset of the volume that needs to be accessed and then determine the storage controller corresponding to the block. The server can directly send a data reading request or a data writing request to the determined storage controller to process. In this way, the following case may be prevented: The data reading request or the data writing request of the server needs to be forwarded to a corresponding storage controller when the found storage controller corresponding to the block which the server needs to access is another storage controller but not the one that conducts the query. Therefore, the time delay when the data reading request or the data writing request of the server reaches the block that needs to be accessed is shortened and the memory resources of the storage controller occupied by the data reading request or the data writing request of the server are decreased.

BRIEF DESCRIPTION OF THE DRAWINGS

To describe the technical solution in embodiments of the present invention clearly, the following describes the accompanying drawings for describing the embodiments. Apparently, the accompanying drawings are only some embodiments of the present invention and those skilled in the art my also derive other drawings from these accompanying drawings without any creative effort.

FIG. 1 is a flowchart of a method for a server to access a volume according to an embodiment of the present invention;

FIG. 2 is a flowchart of another method for a server to access a volume according to an embodiment of the present invention;

FIG. 3 is a schematic structural diagram of a server according to an embodiment of the present invention;

FIG. 4 is a schematic structural diagram of another server according to an embodiment of the present invention; and

FIG. 5 is a schematic structural diagram of another server according to an embodiment of the present invention.

DETAILED DESCRIPTION OF THE EMBODIMENTS

The technical solution in embodiments of the present invention is clearly and fully described in the following with reference to the accompanying drawings in embodiments of the present invention. It is evident that the embodiments are only some exemplary embodiments of the present invention, and the present invention is not limited to such embodiments. All other embodiments that those skilled in the art obtain based on embodiments of the present invention also shall fall within the protection scope of the present invention.

Embodiment 1

FIG. 1 is a flowchart of a method for a server to access a volume provided in this embodiment of the present invention. As shown in FIG. 1, the method includes the following steps:

101: Determine, from a first list, a block that needs to be accessed according to an access offset of a volume that needs to be accessed.

For example, the server needs to access a volume when receiving an external input command or running a certain program. In this embodiment and the following embodiments, that server accesses a volume may include the following: the server reads data from a volume, or, the server writes data into a volume to store the data.

The preceding first list can store the information of at least two blocks with the same size into which a volume is divided. In this embodiment of the present invention, the information of the blocks may be the sequence numbers or the identities of the blocks. The format of the first list may be similar to that of Table 1 in the following. Table 1 stores sequence numbers of N (N is a natural number) blocks and these N blocks are obtained by dividing the volume corresponding to a volume ID and these N blocks have the same size.

TABLE 1 Volume ID Block 1 Block 2 Block 3 . . . Block N

Furthermore, a plurality of rows can be set in the first list of the preceding Table 1 for storing the information of blocks with the same size into which each of a plurality of volumes is divided. Volume IDs of a plurality of volumes are different and are not limited in this embodiment of the present invention.

102: Determine a storage controller corresponding to the block from a second list according to the determined block.

The preceding second list stores information of each of the blocks into which a volume is divided and its corresponding storage controller. In this embodiment of the present invention, the information of each of the blocks and its corresponding storage controller may be the sequence numbers or identities of storage controllers corresponding to each of the blocks. The format of the second list may be similar to that of Table 2 in the following. Table 2 stores the sequence numbers of N (N is a natural number) storage controllers, and each of the blocks corresponds to one storage controller.

TABLE 2 Volume ID Storage controller Block 1 Storage controller 1 Block 2 Storage controller 2 Block 3 Storage controller 3 . . . . . . Block N Storage controller N

Furthermore, a plurality of columns may be set in the second list as shown in the preceding Table 2 for storing blocks with the same size into which each of a plurality of volumes is divided. For the blocks with the same size into which the same volume is divided, each of the blocks corresponds to a different storage controller, or, a plurality of blocks correspond to the same storage controller, which is not limited in this embodiment of the present invention.

103: Send a data reading request or a data writing request to the storage controller corresponding to the block to process.

Because each storage controller can be connected to the server through a switch, and after the preceding 102 determines the block which the server needs to access, a data reading request or a data writing request may be sent to the switch and then forwarded by the switch to the corresponding storage controller to process.

The storage controller corresponding to the block can write data on the server into the block which the server needs to access according to the writing request of the server, or, read data from the block which the server needs to access according to the reading request of the server and return data to the server, thereby achieving the objective that the server accesses a volume.

Furthermore, the method provided in this embodiment of the present invention may include the following:

obtaining, from a meta data server (Meta Data Server, MDS), the information of at least two blocks with the same size into which the volume is divided and the information of each of the blocks into which the volume is divided and its corresponding storage controller, and writing the information of at least two blocks into which the volume is divided into the preceding first list and the information of each of the blocks into which the volume is divided and its corresponding storage controller into the preceding second list.

For example, obtaining from the MDS, by the server, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller in detail can be as follows: The server receives, from the MDS, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller.

For example, obtaining from the MDS, by the server, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller in detail may also be as follows:

The server is loaded with multi-path software, the multi-path software can obtain, from the MDS, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller when the multi-path software is initializing.

The MDS can be an independent server or one storage controller of a plurality of storage controllers. The MDS is used for recording the information of blocks with the same size into which each volume is divided and the information of each of the blocks and its corresponding storage controller, which is the common knowledge for those skilled in the art and is not introduced in this embodiment of the present invention.

By using the method provided in this embodiment of the present invention, the following case may be prevented: A data reading request or a data writing request of the server to a corresponding storage controller is forwarded when the storage controller that corresponds to the block to which the server request access and found by a storage controller is another storage controller. Therefore, the time delay when the data reading request or the data writing request of the server reaches the block that needs to be accessed is shortened and the memory resources of the storage controller occupied the data reading request or the data writing request of the server are decreased. For example, the 101 that the server determines a block that needs to be accessed from a first list according to an access offset of a volume may be implemented in the following way but not limited to such way:

A: Divide the access offset of the volume by the size of the blocks into which the volume is divided, wherein the size is stored in the first list to obtain a quotient; and

B: Add 1 to the integral part of the quotient to obtain the block that needs to be accessed.

It is assumed that, in the first list shown in the preceding Table 1, the size of the volume corresponding to a volume ID is 320 MB and the volume ID is divided into 10 blocks (N is 10) with the same size, that is, the size of block 1 is 32 MB, the size of block 2 is 32 MB . . . and the size of block 10 is 32 MB. If the access offset of the volume ID that needs to be accessed is 40 MB, 40/32=1.25; it is determined that the block which the server needs to access is block 2 by adding 1 to the integral part of 1.25. Specifically, the server may start to access block 2 from the 8 MB (40 MB−32 MB =8 MB) address of block 2.

Embodiment 2

FIG. 2 is a flowchart of another method for a server to access a volume provided in this embodiment of the present invention. As shown in FIG. 2, the method may include the following steps:

201: A server obtains, from an MDS, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller.

For example, obtaining from the MDS, by the server, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller in detail may be as follows:

The server receives, from the MDS, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller.

For example, obtaining from the MDS, by the server, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller in detail may also be as follows:

The server is loaded with multi-path software, the multi-path software can obtain, from the MDS, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller when the multi-path software is initializing.

The MDS can be an independent server or one storage controller of a plurality of storage controllers. The MDS is used for recording the information of blocks with the same size into which each volume is divided and the information of each of the blocks and its corresponding storage controller, which is the common knowledge for those skilled in the art and is not introduced in this embodiment of the present invention.

202: Write the information of at least two blocks with the same size into which the volume is divided into a first list for storage and the information of each of the blocks into which the volume is divided and its corresponding storage controller into a second list for storage.

The format of the first list may be similar to that shown in the preceding Table 1, and the format of the second list may be similar to that shown in the preceding Table 2 and here are not described in this embodiment of the present invention.

203: The server determines, from the first list, the block that needs to be accessed according to an access offset of the volume that needs to be accessed.

For example, the server needs to access a volume when receiving an external input command or running a certain program.

For example, the server may obtain a quotient by dividing the access offset of the volume by the size of the blocks into which the volume is divided, wherein the size is stored in the first list and determine the block that needs to be accessed by adding 1 to the integral part of the obtained quotient.

It is assumed that, in the first list shown in the preceding Table 1, the size of the volume corresponding to a volume ID is 320 MB and the volume is divided into 10 blocks (N is 10) with the same size, that is, the size of block 1 is 32 MB, the size of block 2 is 32 MB . . . and the size of block 10 is 32 MB. If the access offset of the volume ID that needs to be accessed is 20 MB, 20/32=0.625; it is determined that the block which the server needs to access is block 1 by adding 1 to the integral part of 0.625. Specifically, the server may start to access block 1 from the 20 MB address of block 1.

204: Determine a storage controller corresponding to the block from a second list according to the determined block.

The second list can store the information of each of the blocks into which the volume is divided and its corresponding storage controller, and the format of the second list may be similar to that shown in the preceding Table 2 and here are not described in this embodiment of the present invention.

205: Send a data reading request or a data writing request to the storage controller corresponding to the block to process.

The preceding introduces another method for a server to access a volume provided in this embodiment of the present invention. This embodiment of the present invention may prevent the following case: A data reading request or a data writing request of the server to the corresponding storage controller is forwarded when the block which the server needs to access by the storage controller from the inquiry server is another storage controller. Therefore, the time delay when the data reading request or the data writing request of the server reaches the block that needs to be accessed is shortened and the memory resources of the storage controller occupied the data reading request or the data writing request of the server are decreased.

The method for the server to access a volume provided in the embodiment of the present invention can lower the amount of the data exchanged between storage controllers, reducing the bandwidth of the data bus between storage controllers or removing the data bus between storage controllers.

Embodiment 3

FIG. 3 is a schematic diagram of the structure of a server provided in this embodiment of the present invention. As shown in FIG. 3, the server may include:

a first determining module 301, configured to determine, from a first list, a block that needs to be accessed according to an access offset of a volume that needs to be accessed;

where, the preceding first list can be used for storing the information of at least two blocks with the same size into which a volume is divided. The format of the first list may be similar to that shown in the preceding Table 1 and here is not described in the embodiment of the present invention.

a second determining module 302, configured to determine, from a second list, the storage controller corresponding to the block according to the block determined by the first determining module 301;

where, the second list can be used for storing the information of each of the blocks and its corresponding storage controller into which the volume is divided. The format of the second list may be similar to that shown in the preceding Table 2 and here is not described in this embodiment of the present invention.

In an embodiment, the preceding first list may be stored in the first determining module 301 as a configuration file, and the preceding second list may be stored in the second determining module 302 as a configuration file.

and a sending module 303, configured to send a data reading request or a data writing request to the storage controller that corresponds to the block and that is determined by the second determining module 302 to process.

As shown in FIG. 3, the server may further include:

an obtaining module 304, configured to obtain, from the MDS, the information of at least two blocks with the same size into which the volume is divided and obtain the information of each of the blocks into which the volume is divided and its corresponding storage controller; and

a writing module 305, configured to write the information of at least two blocks with the same size into which the volume is divided obtained by the obtaining module 304 into a first list for storage and the information of each of the blocks into which the volume is divided and its corresponding storage controller into a second list for storage, in which the information of at least two blocks and the information of a storage controller are obtained by the obtaining module 304.

As shown in FIG. 3, when the preceding first list is stored in the first determining module 301 as a configuration file and the preceding second list stored in the second determining module 302 as a configuration file, the writing module 305 can write the information of at least blocks with the same size into which the volume is divided obtained by the obtaining module 304 into the first list that the determining module 301 stores and write the information of each of the blocks into which the volume is divided and its corresponding storage controller obtained by the obtaining module 304 into the second list that the second determining module 302 stores, in which the information of at least two blocks and the information of a storage controller are obtained by the obtaining module 304.

In an embodiment, specifically, the first determining module 301 can divide the access offset of the volume by the size of the blocks into which the volume is divided to obtain a quotient and add 1 to the integral part of the quotient to obtain the block that needs to be accessed.

FIG. 4 is a schematic diagram of the structure of another server provided in this embodiment of the present invention. As shown in FIG. 4, the obtaining module 304 of the server may include:

an obtaining submodule 3041, configured to receive, from the MDS, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller.

FIG. 5 is a schematic diagram of the structure of another server provided in this embodiment of the present invention. As shown in FIG. 5, the obtaining module 304 of the server may include: a multi-path software submodule 3042, configured to obtain, from the MDS, the information of at least two blocks with the same size into which a volume is divided and the information of each of the blocks and its corresponding storage controller when the multi-path software is initializing.

The above introduces the server provided in this embodiment of the present invention. The MDS provided in this embodiment of the present invention can store at least two blocks into which a volume is divided and each of the blocks and its corresponding storage controller. The server can determine a block that needs to be accessed according to an access offset of a volume that needs to be accessed and then determine the storage controller corresponding to the block. The server can directly send a data reading request or a data writing request to the determined storage controller to process. In this way, the following case may be prevented: The data reading request or the data writing request of the server needs to be forwarded to a corresponding storage controller when the found storage controller corresponding to the block which the server needs to access is another storage controller but not the one that conducts the query. Therefore, the time delay when the data reading request or the data writing request of the server reaches the block that needs to be accessed is shortened and the memory resources of the storage controller occupied by the data reading request or the data writing request of the server are decreased.

Those skilled in the art may understand: All or part of the steps of the method of the preceding embodiment can be preformed through the hardware instructed by a program. The preceding program can be stored in a computer-readable storage medium. When the program is in execution, steps of the method of this embodiment are all executed. The preceding storage medium includes: various kinds of media capable of storing program codes, such as read-only memory (Read-Only Memory, ROM), random access memory (Random Access Memory, RAM), magnetic disk and optical disk.

The above describes a server and a method for the server to access a volume provided in embodiments of the present invention. Embodiments are applied for illustrating the principle and implementation ways. The description of such embodiments is only for helping understand the method and core concept of the present invention; meanwhile, those skilled in the art can make modifications to the specific implementation and application range according to the concept of the present invention. In conclusion, the content of this specification shall not be construed as a limitation to the present invention. 

1. A method executed by a server connected to one or more storage controllers through a switch for enabling the server to access a volume, the method comprising: determining, from a first list, a block that needs to be accessed according to an access offset of the volume, wherein the first list is configured to store first information of at least two blocks with [[the]]a same size into which the volume is divided; determining, from a second list, a storage controller of the one or more storage controllers corresponding to the block that needs to be accessed, wherein the second list is configured to store second information of a corresponding relationship between the one or more storage controllers and the at least two blocks; and sending a request to the storage controller corresponding to the block that needs to be accessed to process, the request being from the group consisting of: a data reading request and a data writing request.
 2. The method according to claim 1, further comprising: obtaining, from a meta data server, the first information and the second information; writing the first information into the first list for storage; and writing the second information into the second list for storage.
 3. The method according to claim 2, wherein the obtaining, from the meta data server, the first information and the second information comprises: receiving the first information and third information of the storage controller where the first information and the third information are sent by the meta data server.
 4. The method according to claim 2, wherein, if the server is loaded with multi-path software, obtaining from the meta data server, by the server, the first information and the third information comprises: obtaining, from the meta data server, the first information and the third information when the multi-path software is initializing.
 5. The method according to claim 1, wherein the determining, from the first list, the block that needs to be accessed according to the access offset of the volume comprises: obtaining a quotient by dividing the access offset of the volume by a size of the at least two blocks, wherein the size is stored in the first list and adding 1 to the integral part of the quotient to obtain the block that needs to be accessed.
 6. A server, comprising: a processor and a memory; a first determining module, configured to determine, from a first list, a block that needs to be accessed according to an access offset of a volume that needs to be accessed, wherein the first list is configured to store first information of at least two blocks with a same size into which the volume is divided; a second determining module, configured to determine, from a second list, a storage controller corresponding to the block that needs to be accessed, wherein the second list is configured to store second information of a corresponding relationship between one or more storage controllers and the at least two blocks; and a sending module, configured to send a request to the storage controller corresponding to the block determined by the second determining module to process the request being from the group consisting of: a data reading request and a data writing request.
 7. The server according to claim 6, further comprising: an obtaining module, configured to obtain, from a meta data server, the first information and the second information ; a writing module, configured to write the first information into the first list for storage; and write the second information into the second list for storage.
 8. The server according to claim 7, wherein the obtaining module comprises: a receiving submodule, configured to receive the first information and third information of the storage controller corresponding to each of the at least two blocks where the first information and the third information are sent by the meta data server.
 9. The server according to claim 7, wherein the obtaining module comprises: a multi-path software submodule, configured to obtain, from the meta data server, the first information and the third information when the multi-path software is initializing.
 10. The server according to claim 6, wherein the first determining module is configured to obtain a quotient by dividing the access offset of the volume by a size of the at least two blocks, wherein the size is stored in the first list and adding 1 to the integral part of the quotient to obtain the block that needs to be accessed.
 11. A computer readable medium comprising computer executable instructions, for execution by a server connected to one or more storage controllers through a switch, to enable the server to access a volume by performing the following steps: determining, from a first list, a block that needs to be accessed according to an access offset of the volume that needs to be accessed, wherein the first list is configured to store first information of at least two blocks with a same size into which the volume is divided; determining, from a second list, one of the storage controllers corresponding to the block that needs to be accessed, wherein the second list is configured to store second information of a corresponding relationship between the one or more storage controllers and the at least two blocks; and sending a request to the storage controller corresponding to the block that needs to be accessed to process, the request being from the group consisting of: data reading request; and a data writing request.
 12. The computer readable medium according to claim 11, further performing the steps of: obtaining, from a meta data server, the first information and the second information; writing the first information into the first list for storage; and writing the second information into the second list for storage.
 13. The computer readable medium according to claim 12, wherein the obtaining, from the meta data server, the first information and the second information comprises: receiving the first information and third information of the storage controller corresponding to each of the blocks, where the first information and the third information are sent by the meta data server.
 14. The computer readable medium according to claim 12, wherein, if the server is loaded with multi-path software, obtaining from the meta data server, by the server, the first information and the third information comprises: obtaining, from the meta data server, the first information of at least two blocks with the same size into which the volume is divided and the third information when the multi-path software is initializing.
 15. The computer readable medium according to claim 11, wherein the determining, from the first list, the block that needs to be accessed according to the access offset of the volume that needs to be accessed comprises: obtaining a quotient by dividing the access offset of the volume by a size of the at least two blocks, wherein the size is stored in the first list and adding 1 to the integral part of the quotient to obtain the block that needs to be accessed. 